package com.diors.game.engine.arpg.scene.entity;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import com.diors.game.engine.arpg.scene.model.SceneLineModel;
import com.diors.game.engine.arpg.scene.model.SceneModel;
import com.diors.game.engine.arpg.scene.model.SceneTypeEnum;

/**
 * 场景实体
 * @author	darren.ouyang <ouyang.darren@gmail.com>
 * @date	2013-10-21
 * @version 1.0
 * @copyright Copyright (c) 2013, darren.ouyang
 */
public class SceneEntity 
{

	/* 场景ID */
	private int Id;
	
	/* 场景Model */
	private SceneModel sceneModel;
	
	/* 场景分线Model */
	private SceneLineModel lineModel;
	
	/* 场景分线地图实体列表 */
	private List<MapEntity> lines;
	
	/* 场景摧毁时间 */
	private long destroyTime;
	
	public SceneEntity (SceneModel sceneModel, SceneLineModel lineModel)
	{
		lines = new ArrayList<MapEntity>();
	}
	
	/**
	 * 获取场景原型ID
	 * @return
	 * @author	darren.ouyang
	 * @create	2013年11月13日 上午10:29:53
	 */
	public int gainBaseID() 
	{
		return sceneModel.getId();
	}
	
	/**
	 * 场景类型
	 * @return
	 * @create	2013-10-28	darren.ouyang
	 */
	public SceneTypeEnum gainSceneType ()
	{
		return sceneModel.getType();
	}
	
	/**
	 * 注册分线
	 * @param map
	 * @author	darren.ouyang
	 * @create	2013年11月13日 上午10:34:15
	 */
	public void registerLine (MapEntity map)
	{
		lines.add(map);
	}
	
	/**
	 * 注销线路
	 * @param mapId
	 * @author	darren.ouyang
	 * @create	2013年11月13日 上午10:34:35
	 */
	public void unregisterLine (int mapId)
	{
		Iterator<MapEntity> iter = lines.iterator();
		while (iter.hasNext())
		{
			MapEntity map = iter.next();
			if (map.getId() == mapId)
				iter.remove();
		}
	}
	
	/**
	 * 获取线路数量
	 * @return
	 * @author	darren.ouyang
	 * @create	2013年11月13日 上午10:37:11
	 */
	public int gainlineSize ()
	{
		return lines.size();
	}
	
	/**
	 * 获取所有线路
	 * @return
	 * @author	darren.ouyang
	 * @create	2013年11月13日 上午10:35:29
	 */
	public List<MapEntity> gainlines ()
	{
		return lines;
	}
	
	/**
	 * 获取线路
	 * @param mapId
	 * @return
	 * @author	darren.ouyang
	 * @create	2013年11月13日 上午10:35:52
	 */
	public MapEntity gainline (int mapId)
	{
		for (MapEntity line : lines)
		{
			if (line.getId() == mapId)
				return line;
		}
		
		return null;
	}
	
	public SceneLineModel gainLineModel() 
	{
		return lineModel;
	}
	
	public SceneModel gainSceneModel() 
	{
		return sceneModel;
	}
	
	
	
	
	

	public int getId() {
		return Id;
	}

	public void setId(int id) {
		Id = id;
	}

	public long getDestroyTime() {
		return destroyTime;
	}

	public void setDestroyTime(long destroyTime) {
		this.destroyTime = destroyTime;
	}
}
